package com.xique.door.bean.transfer;

import com.xique.common.core.utils.PicUtil;
import com.xique.door.bean.domain.User;
import com.xique.door.device.hk.bean.param.PersonAddParam;
import com.xique.door.device.hk.bean.param.PersonUpdateParam;
import org.springframework.stereotype.Component;

/**
 * @author caogq
 * @Date: 2021/7/14 11:05
 * @Description:
 */
@Component
public class UserPersonConvert {

    /**
     * personName	String	16	是	人员姓名
     * employeeNo	String	32	是	人员编号，同一个租户下不能重复，只支持英文、数字
     * personPhone	String	11	否	人员手机号
     * personType	String	9	否	人员类型， normal：普通人，visitor:访客，blackList:黑名单，默认：normal；当人员类型为normal时，长期有效，validBeginTime和validEndTime字段将失效
     * faceImageBase64	String	/	否	base64编码的人脸图片，图片大小需小于200kB，数据需去除base64前缀
     * verifyImage	Boolean	/	否	是否进行人脸质量校验，默认：true；如果调用方能保证人脸的质量符合标准那么可以配置为false,注意：如果调用方不能保证人脸质量，而且不对人脸质量校验，那么图片质量差的人脸可能会下发到设备，可能导致人脸下发失败
     * floorNo	Integer	/	否	楼层号，取值1-999
     * roomNo	Integer	/	否	房间号，取值1-99
     * validBeginTime	String	/	是	人员权限开始时间，日期格式只支持如下两种格式：(1)权限精确到天，示例：2020-01-01 (2)权限精确到秒并加上时区，示例：2019-01-29T00:00:59+08:00
     * validEndTime	String	/	是	人员权限结束时间，日期格式只支持如下两种格式：(1)权限精确到天，示例：2020-01-01 (2)权限精确到秒并加上时区，例如：2019-01-29T00:00:59+08:00 ; 结束时间需早于2037-12-31
     * planTemplateNos	List	/	否	人员计划模板列表，不填时默认为[1] 代表计划模板 1(全天候模板 )；调用计划模板修改接口，修改计划模板1可能会影响默认计划模板人员的权限。
     * dynamicCode	String	6	否	人员开门码，仅支持6位纯数字，且必须是6位；门禁设备不支持该字段，可视对讲设备支持
     * maxOpenDoorTime	Integer	/	否	人员最大开门次数，0-代表无次数限制，默认无次数限制；门禁设备支持该字段，可视对讲设备不支持；只有当personType=visitor时该参数才会生效
     * belongGroup	String	32	否	所属群组，多个以英文逗号分隔，例如”1,3,5”，最多支持4个；该字段仅多重认证功能使用，其他场景禁止使用
     */
    public PersonAddParam convertUser2PersonAdd(User user){
        PersonAddParam personAddParam = new PersonAddParam();
        personAddParam.setPersonType("normal");
        personAddParam.setPersonName(user.getUserName());
        personAddParam.setPersonPhone(user.getPhone());
        personAddParam.setEmployeeNo(user.getCustomId());
        personAddParam.setFaceImageBase64(PicUtil.getBase64(user.getFaceUrl()));
//        personAddParam.setBelongGroup();
//        personAddParam.setDynamicCode();
//        personAddParam.setFloorNo();
//        personAddParam.setMaxOpenDoorTime();
//        personAddParam.setPlanTemplateNos();
//        personAddParam.setRoomNo();
//        personAddParam.setValidBeginTime();
//        personAddParam.setValidEndTime();
//        personAddParam.setVerifyImage(true);
        return personAddParam;
    }

    public  PersonUpdateParam convertUser2PersonUpdate(User user){
        PersonUpdateParam personUpdateParam = new PersonUpdateParam();
        personUpdateParam.setPersonName(user.getUserName());
        personUpdateParam.setPersonPhone(user.getPhone());
        personUpdateParam.setEmployeeNo(user.getCustomId());
        personUpdateParam.setFaceImageBase64(PicUtil.getBase64(user.getFaceUrl()));
//        personAddParam.setBelongGroup();
//        personAddParam.setDynamicCode();
//        personAddParam.setFloorNo();
//        personAddParam.setMaxOpenDoorTime();
//        personAddParam.setPlanTemplateNos();
//        personAddParam.setRoomNo();
//        personAddParam.setValidBeginTime();
//        personAddParam.setValidEndTime();
//        personAddParam.setVerifyImage(true);
        return personUpdateParam;
    }
}
